#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
小米便签手动导出助手
引导用户通过简单的手动操作导出所有便签内容
"""

import os
import sys
import time
import json
from datetime import datetime


def main():
    print("小米便签手动导出助手")
    print("="*50)
    print("这个工具将引导您通过简单的手动操作导出所有小米便签")
    print("="*50)
    
    # 创建导出目录
    output_dir = "./manual_exports"
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
        print(f"✅ 创建导出目录: {output_dir}")
    
    print("\n请按照以下步骤操作：")
    print("\n步骤 1: 打开Chrome浏览器并登录小米云服务")
    print("   a. 打开Chrome浏览器")
    print("   b. 访问小米云服务：https://i.mi.com/")
    print("   c. 使用您的小米账号登录")
    input("   完成后按Enter键继续...")
    
    print("\n步骤 2: 导航到便签页面")
    print("   a. 登录成功后，点击左侧菜单中的'便签'选项")
    print("   b. 确保您能看到所有的便签列表")
    input("   完成后按Enter键继续...")
    
    print("\n步骤 3: 导出便签内容")
    print("   我们将引导您逐个导出便签内容")
    print("   您只需要复制粘贴便签内容到本工具即可")
    
    notes_data = []
    note_index = 1
    
    while True:
        print(f"\n===== 导出便签 {note_index} =====")
        print("   在浏览器中：")
        print("   1. 点击一条便签以打开它")
        print("   2. 选择并复制便签的标题")
        print("   3. 回到本工具，粘贴标题并按Enter")
        
        # 获取标题
        title = input("   请输入便签标题: ")
        if not title.strip():
            title = f"无标题_{note_index}"
        
        print("   在浏览器中：")
        print("   1. 选择并复制便签的内容")
        print("   2. 回到本工具，粘贴内容并按Enter")
        print("   提示：粘贴后，输入单独一行的'END'来结束输入")
        
        # 获取内容（支持多行输入）
        print("   请输入便签内容（输入单独一行的'END'结束）:")
        content_lines = []
        while True:
            line = input()
            if line.strip().upper() == "END":
                break
            content_lines.append(line)
        content = "\n".join(content_lines)
        
        # 保存便签数据
        note_data = {
            "id": note_index,
            "title": title.strip(),
            "content": content,
            "export_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        }
        notes_data.append(note_data)
        
        print(f"✅ 便签 '{title[:20]}...' 已保存")
        
        # 询问是否继续
        choice = input("\n是否继续导出下一条便签？(y/n): ")
        if choice.lower() != "y":
            break
        
        note_index += 1
    
    # 保存所有便签到JSON文件
    if notes_data:
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        file_path = os.path.join(output_dir, f"mi_notes_manual_{timestamp}.json")
        
        with open(file_path, "w", encoding="utf-8") as f:
            json.dump(notes_data, f, ensure_ascii=False, indent=2)
        
        print(f"\n✅ 导出完成！")
        print(f"已将 {len(notes_data)} 条便签导出到: {file_path}")
        
        # 同时保存为单独的TXT文件
        txt_dir = os.path.join(output_dir, f"mi_notes_txt_{timestamp}")
        if not os.path.exists(txt_dir):
            os.makedirs(txt_dir)
            
        for note in notes_data:
            # 生成安全的文件名
            safe_title = "".join([c for c in note["title"] if c.isalnum() or c in " -_"]).rstrip()
            if not safe_title:
                safe_title = f"无标题_{note['id']}"
            
            file_path = os.path.join(txt_dir, f"{safe_title}.txt")
            
            # 避免文件名冲突
            counter = 1
            base_path = file_path
            while os.path.exists(file_path):
                name, ext = os.path.splitext(base_path)
                file_path = f"{name}_{counter}{ext}"
                counter += 1
            
            # 写入文件
            with open(file_path, "w", encoding="utf-8") as f:
                if note["title"] != "无标题":
                    f.write(f"{note['title']}\n\n")
                f.write(note["content"])
                f.write(f"\n\n导出时间: {note['export_time']}")
        
        print(f"同时将便签保存为单独的TXT文件: {txt_dir}")
    else:
        print("\n⚠️ 没有导出任何便签")
    
    print("\n感谢使用小米便签手动导出助手！")
    input("按Enter键退出...")


if __name__ == "__main__":
    main()